package com.cdxy.biz.process;

import com.cdxy.model.dto.req.*;
import com.cdxy.model.dto.resp.ImgCodeResp;
import com.cdxy.model.dto.resp.UserInfoResp;

/**
 * @Author: tangy
 * @Date: 2020/2/23 16:55
 */
public interface ILoginBizProcess {

    /**
     * 手机验证码登录发送验证码
     * @param sendMobileCodeReq
     */
    void sendSms(SendMobileCodeReq sendMobileCodeReq);

    /**
     * 邮箱验证码登录发送验证码
     * @param sendEmailCodeReq
     */
    void sendEmail(SendEmailCodeReq sendEmailCodeReq);

    /**
     * 获取图片验证码
     * @return
     */
    ImgCodeResp getImgCode();

    /**
     * 手机验证码登录
     * @param loginMobileCodeReq
     * @return
     */
    UserInfoResp mobileCodeLogin(LoginMobileCodeReq loginMobileCodeReq);

    /**
     * 邮箱验证码登录
     * @param loginEmailCodeReq
     * @return
     */
    UserInfoResp emailCodeLogin(LoginEmailCodeReq loginEmailCodeReq);

    /**
     * 账号密码登录
     * @param loginAccountReq
     * @return
     */
    UserInfoResp accountLogin(LoginAccountReq loginAccountReq);

    /**
     * 邮箱登录时绑定手机发送验证码
     *
      * @param sendMobileCodeReq
     */
    void sendSmsBindEmail(SendMobileCodeReq sendMobileCodeReq);

    /**
     * 邮箱登录时绑定手机
     *
     * @param loginBindEmailReq
     * @return
     */
    UserInfoResp emailLoginBindMobile(LoginBindEmailReq loginBindEmailReq);

    /**
     * 退出登录
     *
     * @param userWithLoginReq
     */
    void loginOut(UserWithLoginReq userWithLoginReq);
}
